home *** CD-ROM | disk | FTP | other *** search
/ Gamer's Paradise: Czech / Hracuv-raj_Ceske-hry_cd2.bin / Honzovy Šachy 1.0 / zdrojaky / hashtab.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-06-22  |  2.7 KB  |  67 lines

  1. /**********************************************************/
  2. /* hashtab.h - hash funkce pro tabulku ohodnocenych pozic */
  3. /* 31.12. 2000 Jan Nemec                                  */
  4. /**********************************************************/
  5. #ifndef hashtabH
  6. #define hashtabH
  7. #include "volby.h"
  8. #include "cotyvar.h"
  9.  
  10. typedef struct{
  11.     u32 f[13][h8+1]; 
  12. /* [od cerneho krale pres prazdne pole az po bileho krale][pole]*/
  13.     u32 bily;
  14.     u32 roch[16];
  15.     u32 mimoch[h5+1];
  16. }THashNahoda;
  17. /* THashNahoda - obsahuje nahodna cisla pro vsechny dvojice
  18. (typ kamene, pole), dale pro stav mimochodem, rosad a kdo
  19. je na tahu*/
  20.  
  21. extern THashNahoda hnF;
  22. extern THashNahoda hnG; /* Dve sady nahodnych cisel pro
  23. dve funkce */
  24. void HashInit(void);
  25. /*********************************************************/
  26. /* HashInit naplni koeficienty obou hashovacich funkci   */
  27. /* pseudonahodnymi cisly                                 */
  28. /* Vola se JEDNOU na zacatku celeho PROGRAMU             */
  29. /*********************************************************/
  30. u32 HashF(TPozice *pos);
  31. u32 HashG(TPozice *pos);
  32. /**********************************************************************/
  33. /* HashF a HashG                                                      */
  34. /* Hashovaci funkce, vrati hash kod pozice. Nevola se v rekursivnim   */
  35. /* propoctu, ale jen jednou na zacatku propoctu. V rekursi se pocita  */
  36. /* "inkementalne" postupnym xorovanim tahu.                           */
  37. /* F urcuje pozici v tabulce, G cislo pro kontrolu                    */
  38. /**********************************************************************/
  39. void MazejHash(TUloha *u);
  40. /***************************/
  41. /* Vyprazdni Hash tabulku  */
  42. /***************************/
  43. bool GetHash(TUloha *uloha, s16 alfa, s16 beta, u8 hloubka, s16 *cena);
  44. /**************************************************/
  45. /* Je pozice v tabulce ? A jak je ohodnocena ?    */
  46. /**************************************************/
  47. void SetHash(TUloha *uloha, u8 hloubka, u8 priznak, s16 cena);
  48. /*******************************/
  49. /* Ulozi pozici do tabulky     */
  50. /*******************************/
  51. u32 HashPechF(TPozice *pos);
  52. u32 HashPechG(TPozice *pos);
  53. /*************************************************/
  54. /* HashPechF a HashPechF                         */
  55. /* 2 hash funkce struktury pescu                 */
  56. /* (v rekurzi nevolat, pocita se inkrementalne)  */
  57. /*************************************************/
  58. bool GetPechHash(TUloha *uloha, THashPech **hp);
  59. /********************************************************/
  60. /* Je struktura pescu v tabulce ? A jak je ohodnocena ? */
  61. /********************************************************/
  62. void SetPechHash(TUloha *uloha, THashPech *hp);
  63. /****************************************/
  64. /* Ulozi strukturu pescu do tabulky     */
  65. /****************************************/
  66. #endif
  67.